/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package guiBoleteria;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import logica.Fabrica;
import logica.IBoleteria;
import util.datatypes.DTReserva;

/**
 *
 * @author Administrador
 */
public class ModeloBusquedaReserva extends AbstractTableModel
{
    String[] titles;

    ArrayList<DTReserva> datos = new ArrayList<DTReserva>();
    
    public ModeloBusquedaReserva()
    {
        titles=new String[5];
        titles[0]="Pelicula";
        titles[1]="Inicio Funcion";
        titles[2]="Costo";
        titles[3]="Cancelada";
        titles[4]="Vendida";
    }
    
    public ModeloBusquedaReserva(List<DTReserva> reserva)
    {
        titles=new String[5];
        titles[0]="Pelicula";
        titles[1]="Inicio Funcion";
        titles[2]="Costo";
        titles[3]="Cancelada";
        titles[4]="Vendida";

        for (DTReserva res : reserva) {
            datos.add(res);
        }

    }

    public int getRowCount() {
        return datos.size();
    }

    public int getColumnCount() {
        return titles.length;
    }

    public Object getValueAt(int rowIndex, int columnIndex) 
    {
        IBoleteria i = Fabrica.getIBoleteria();

        if (columnIndex == 0){
            return i.getFuncionPelicula(datos.get(rowIndex).getFuncion()).getNombre();

        }else if (columnIndex == 1){
            return i.obtenerHoraString(datos.get(rowIndex).getFuncion().getHoraInicio());

        }else if (columnIndex == 2){
            return (datos.get(rowIndex).getCostoTotal());
        
        }else if (columnIndex == 3){
            return datos.get(rowIndex).isEstado();
        }
        else {
            return datos.get(rowIndex).isVendida();
        }
    }

    @Override
    public String getColumnName(int column) {
        return titles[column];
    }

    @Override
    public Class getColumnClass(int columnIndex) {
        if (columnIndex == 0) return String.class;
        else if (columnIndex == 1) return String.class;
        else if (columnIndex == 2) return Double.class;
        else if (columnIndex == 3) return Boolean.class;
        else return Boolean.class;
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        
        IBoleteria i = Fabrica.getIBoleteria();

        if (columnIndex == 0){
            i.getFuncionPelicula(datos.get(rowIndex).getFuncion()).setNombre(aValue.toString());

        }else if (columnIndex == 1){
            datos.get(rowIndex).getFuncion().setHoraInicio(i.obtenerHoraDouble((String)aValue));

        }else if (columnIndex == 2){
            datos.get(rowIndex).setCostoTotal((Double)aValue);

        }else if (columnIndex == 3){
            datos.get(rowIndex).setEstado((Boolean)aValue);
        }
        else {
            datos.get(rowIndex).setVendida((Boolean)aValue);
        }
    }
}
